home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
8bitfiles.net/archives
/
archives.tar
/
archives
/
compuserve-file-archive
/
16 Vendor Support
/
SMEETS.CNF
< prev
next >
Wrap
Text File
|
2019-04-13
|
22KB
|
786 lines
On December 13, 1987, Chris Smeets was the guest at a formal COnference.
Chris is the author of the ARC utility for the 64. Here is the transcript
of that CO.
Job User ID Nod Ch Tlk Handle
--- ----------- --- -- --- ------------
29 76703,4032 NYJ 30 Wayne/Moderator
54 76526,711 BUT 30 Ray Bowman
65 71340,27 DCI 30 Alexander Schneider
118 76703,4037 SEA 30 Sysop/Betty
125 76703,3051 GNC 30 Sysop Jake
144 70007,2376 TTO 30 Chris Smeets
(Wayne/Moderator)
The FORMAL conference with the programmer extraodinaire, Chris Smeets, begins
Welcome, Chris. We would first like to thank you for offering to share this...
evening with us and, of course, ...
your wonderful ARChive utility implementation for the 64. Welcome.
(Chris Smeets)
Thank-you
(Alexander Schneider)
Do the ! and ? rules apply?
(Wayne/Moderator)
The procedure for asking questions or comments is as Alex has indicated...
? will put you in the queue for a question, ! for a comment....
You will be also given follow-up opportunity if time permits.
Chris, could you give us a little background,...
first, about yourself and your computing history...
(Chris Smeets)
OK
(Wayne/Moderator)
and then a bit about your efforts in implementing ARChive on the 64?
(Chris Smeets)
I started out with a 32K PET back in about 1975.
In those days, if you wanted something you had to write it yourself.
So I taught myself to program, first in BASIC, and later 6502 assembler.
I was attending university and building my plating business up of and on
and managed to get a good command of the PET over the next few years.
I first picked up a 64 about 3 years ago, and only recently picked up my
C-128 when the 64 broke down.
My first intro to the IBM was about 18 or so months ago when we picked one
up for the business. It didn't take long to get a modem, and it was
inevitable that I ran into ARC when downloading files from local boards.
The idea of compressing files intrigued me, and I wanted to write my own
ARC utility so that I could once and for all organize that mountain of
disks I had managed to accumulate over the years.
(Alexander Schneider) ?
(Wayne/Moderator) Alex, ga
(Alexander Schneider)
Chris, where did you get the algorithms?
(Chris Smeets)
From the articles which appear as footnotes in the ARC docs.
(Ray Bowman) ?
(Wayne/Moderator) Follow-up, Alex?
(Alexander Schneider) Yes...
Do you know who originally wrote ARC and came up with the algorithms?
(Sysop Jake) !
(Wayne/Moderator) just a moment..
10:31:32 PM EST Saturday, December 13, 1986
Job User ID Nod Ch Tlk Handle
--- ----------- --- -- --- ------------
29 76703,4032 NYJ 30 * Wayne/Moderator
54 76526,711 BUT 30 Ray Bowman
65 71340,27 DCI 30 Alexander Schneider
118 76703,4037 SEA 30 Sysop/Betty
125 76703,3051 GNC 30 Sysop Jake
144 70007,2376 TTO 30 * Chris Smeets
(Sysop Jake)
Wayne and Chris appear to be talking.
(Sysop/Betty)
Jake, ga with your comment, please.
(Sysop Jake)
I was going to say to Alex that...
compression algorithms are studied by computer scientists.
I don't think one person invented all the algorithms. ga
(Wayne/Moderator)
just a moment
Chris got into Chat by mistake
(Chris Smeets)
I just wanted to know how to indicate how I'm done a response.
(Wayne/Moderator)
Just add 'ga.' (go ahead)
(Alexander Schneider) Oh
(Wayne/Moderator)
Chris, could you add what was not visible for a few lines...
(Chris Smeets)
Huffman developed the algorithm.
(Wayne/Moderator)
about the source, etc.
(Chris Smeets)
To squeeze files, but the idea of representing a binary file as a tree
existed before him.
If you ever try to figure out for yourself how to generate such a tree
you'll realize just how difficult a task this is. Huffman made it easy! ga
(Wayne/Moderator) Ok, Ray. Ga
(Ray Bowman)
Chris, what do you find the most common uses of ARC are? ga
(Chris Smeets)
File transfers via modem are of course number one.
It is really an advantage because of filenaming problems encountered
when storing Commodore files on IBM PCs or places like CIS.
It also a handy way to file away mutiple copies of backup material.
Especially if you have a high capacity drive like an SFD 1001.
I also get alot of people complimenting me on how useful it is as a general
file manipulation tool...(move etc)
ga
(Wayne/Moderator) Follow-up, Ray?
(Ray Bowman)
Does ARC have a printer preference in the PP/P function? ga
(Chris Smeets)
I made a mistake on that in the docs.
The pokes I give to change the printer device and secondary address
should be increased by 1024. (ie $08xx not $04xx)
It's set up for device 4 sa=0 most people need sa=7
I only put that in on the last minute, and will be improving on printer
support quite a bit in future ARCs. (/pp/p is too many p's and looks stupid)
ga
(Wayne/Moderator)
I find it the most useful disk and file maintenance environment there is...
(Sysop/Betty)
<smile>.
(Wayne/Moderator)
I have a question about the date function...
is there any chance that a disposable routine, upon booting...
which would install the current date and 'disappear'. Could that be written?
It is a feature...
which seems not to be used often but of real value. ga
(Chris Smeets)
The actual date routine is rather short. About 128 bytes or so.
I like to change the date to reflect what it is I'm archiving so I'll
probably leave it in there.
(Wayne/Moderator)
I meant that I like it...
(Chris Smeets)
I do plan to have a number of disposable routines though.
(Wayne/Moderator)
but I forget to poke before I boot up
(Chris Smeets)
That setup things like number of drives, drive types etc.
(Wayne/Moderator)
Questions?
(Ray Bowman) ?
(Wayne/Moderator) Ray, ga
(Ray Bowman)
Chris, doesn't the letter names for the drives cover that now? ga
(Chris Smeets)
Yes, but I want to implement some fast serial routines, and they will
have to know what type of drive they are dealing with.
(Alexander Schneider) !
(Chris Smeets)
If no 1541 is detected at bootup, then the serial routines will never
be installed in the first place.
ga
10:49:37 PM EST Saturday, December 13, 1986
Job User ID Nod Ch Tlk Handle
--- ----------- --- -- --- ------------
29 76703,4032 NYJ 30 Wayne/Moderator
54 76526,711 BUT 30 Ray Bowman
65 71340,27 DCI 30 Alexander Schneider
118 76703,4037 SEA 30 Sysop/Betty
125 76703,3051 GNC 30 Sysop Jake
144 70007,2376 TTO 30 Chris Smeets
(Wayne/Moderator)
Ray, follow-up
(Ray Bowman)
Question answered. Thanks. ga
(Wayne/Moderator) ga, Alex
(Alexander Schneider)
Occasionally,I want to compress something when...
I am near the end of a disk.
It is a hassle to copy the files to another disk and then arc them.
Would it be possible to have the user swap disks so the archive...
could be on a seperate disk? ga
(Chris Smeets)
That's a tricky one!
I would have to buffer the output through RAM, and ARC uses all except about
4K of what the 64 has got. That would be one heck of alot of disk swaps!
I am trying to think of some better way to get around this.
(Wayne/Moderator) Follow, Alex?
(Alexander Schneider) No
(Sysop Jake) !
(Alexander Schneider) ga
(Wayne/Moderator) Jake, ga
(Sysop Jake)
The memory limitation of the 64 could be solved a couple of ways...
Commodore is coming out with a memory expander for the 64 (up to 512K)...
Also, if you wrote a new version for the 128, you'd have 64K more buffer space...
or (this is for Alex), you could get a second drive. ga
(Ray Bowman) ?
(Alexander Schneider) !
(Wayne/Moderator)
Chris, I have a question along the same line...
(Chris Smeets)
I picked up a 1750 RAM expander the other day.
And do plan to support it later on.
(Wayne/Moderator)
Would it be possible, for single drive de-ARCing...
to possibly interrupt the process...
and move a 'pointer' ahead within the ARC file...
so that more space might be freed up?
(Disposing of what has already been extracted)
(assuming a copy of full ARC'd file exists elsewhere)
ga
(Chris Smeets)
You mean to both dissolve and scratch the archive at the same time? Yes.
(Wayne/Moderator) yes
(Chris Smeets)
I'll be working on it. ga
(Wayne/Moderator)
Great. Alex, ga
(jason Pollack)
Good evening. I am Jason Pollack.
(Alexander Schneider)
Well,I don't think a new drive would be worthwhile...
because I'm planning to upgrade soon.
(Wayne/Moderator)
Ray, you had a question?
(Alexander Schneider)
DO you have ARCs for 16 bit machines?
ga
(Sysop Jake) !
(Chris Smeets)
No my ARC program is written in 6502 assembler.
(Sysop/Betty)
Good Evening, Jason.
(Ray Bowman)
Would creating several small arc files at the end of a disk...
and then appending these files help? ga
(Alexander Schneider)
I must go now.
(Wayne/Moderator)
Thank you for coming, Alex. Welcome, Jason
(Chris Smeets)
I don't follow your question.
(Ray Bowman)
This was in reference to running out of disk space for an arc file. ga
(Chris Smeets)
OK...well that would be sort of like scratching the files one at a time
after they've been included in the archive.
I was planning to do that soon.
ga
(Wayne/Moderator) Jake
(Sysop Jake)
My comment was an answer to Alex, who may be gone now...
For 16-bit machines, there's an ARC for the Mac and the ST...
and I'm pretty sure there's one for the Amiga, too. ga
(Wayne/Moderator) Yes, Jake, there is
(Sysop/Betty) ?
(Wayne/Moderator) Betty
(Sysop/Betty)
Chris, occasionally I have a problem with an ARChived file which contains...
many files but which are very small...
example, some of current CAD files...
I don't know if it's my 1571, or the diskette itself...
(Ray Bowman) !
(Sysop/Betty)
but it will hang on say the 31st file...
I'll reboot and after an ARC/L extract
the balance individually....
Is there any limit to the number of ARC files within the ARChive? ga
(Chris Smeets)
The problem doesn't sound familiar.
But no, there is no limit on the number of files in an archive.
(Wayne/Moderator) Betty, more?
(Sysop/Betty)
Thank you Chris, like I said, it doesn't happen everytime...
(Chris Smeets)
So far I use only standard kernel routines to access the drives.
(Sysop/Betty)
so perhaps it's the drive. ga
(Wayne/Moderator) ga, Ray
(Ray Bowman)
I have found this to sometimes be a problem when creating an ARC file...
especially on a disk where I have scratched and validated a lot. ga
(Wayne/Moderator)
Betty...
I've found that effect on both the 1541 and the Indus...
(Ray Bowman) !
(Wayne/Moderator)
and it occurs in other programs ...
I think it is a serial and DOS bug...
where the drive just hangs...
and 'forgets' what it was doing...
It is hard to reproduce but happens enough to suspect a slight DOS bug....
I think sometimes just a mechanical reset (bump) is needed. ga Ray
(Chris Smeets)
I do 99% of my work on a 4040, and have very little problems.
But I'll be tackling those wonderful serial drives in the months ahead.
(Wayne/Moderator)
4040 has MUCH better mechanics.
(Ray Bowman) !
(Chris Smeets) And less bugs.
(Wayne/Moderator) Ray, ga
(Ray Bowman)
ARC sure doesn't like FASTLOAD either. ga
(Chris Smeets)
FASTLOAD...I think thats my fault!
(Wayne/Moderator)
That is a DOS support/CHRGET conflict, I believe, Ray
11:17:09 PM EST Saturday, December 13, 1986
Job User ID Nod Ch Tlk Handle
--- ----------- --- -- --- ------------
29 76703,4032 NYJ 30 Wayne/Moderator
54 76526,711 BUT 30 Ray Bowman
118 76703,4037 SEA 30 Sysop/Betty
125 76703,3051 GNC 30 Sysop Jake
144 70007,2376 TTO 30 Chris Smeets
(Chris Smeets)
I think I can get it going rather easily, all I need is a fastload
cartridge to try it out on.
(Wayne/Moderator)
It works great with 1541 Flash
ga
(Chris Smeets)
I think the problem is in how I handle the load and save vectors.
I should save the previous contents (fastload) and then when ARC
is done it should jump to the fastload cartridge. Instead I jump into the
kernel ROMS. ga
(Wayne/Moderator)
Fastload has FAR more bugs than ARC
Questions?
(Sysop/Betty) !
(Wayne/Moderator) Betty, ga
(Sysop/Betty)
You know when Ray mentioned a diskette that a lot of scratches and Wayne...
mention about a possible DOS bug I remembers that nearly 4 years ago I...
proved to myself there was such a DOS bug because if started re-formatting...
diskettes that were work disks rather than continually scratching...
I got good results. So I think it is a DOS bug and really not ARC...
(Ray Bowman) !
(Sysop/Betty)
Chris I didn't mean to imply it was. ga
(Wayne/Moderator) Ray
(Ray Bowman)
I believe Betty's right because once I had a disk reformatted under these...
conditions and got 1570 bloks free on a 664 K disk...
Thoroughly corrupted the disk. ga
(Sysop/Betty) !
(Wayne/Moderator) Betty, ga
(Sysop/Betty)
In other words, the "formatting" wears out or goes away or gets tired...
and needs redone. ga
(Ray Bowman) !
(Wayne/Moderator)
Chris, I must say I am amazed at the dynamic intelligence you've built into ARC
I am able to process a full disk of many files with single pass crunch...
..That's weird...
(Chris Smeets)
I think you can thank MICROSOFT for that.
(Sysop/Betty)
Hello! Is the System slow?
(Wayne/Moderator)
I just got bumped and got back on in time to get my last line
I missed your last line, Chris
(Chris Smeets)
I just cloned the syntax for the IBM version which IS EXTREMELY flexible.
(Wayne/Moderator)
I was about to say...
(Chris Smeets)
I was saying, that although ARCs syntax might be a bit (or alot) awkward
(Wayne/Moderator)
in LESS time than all but the new SuperKit dual file copy...
(Chris Smeets)
For the average commodore user, it is typical for an MS-DOS program.
(Wayne/Moderator)
Less time than a straight 2-drive Copy-All of all files. ga
(Chris Smeets)
All I did was take a lesson from the experts!
11:30:14 PM EST Saturday, December 13, 1986
Job User ID Nod Ch Tlk Handle
--- ----------- --- -- --- ------------
54 76526,711 BUT 30 Ray Bowman
118 76703,4037 SEA 30 Sysop/Betty
125 76703,3051 GNC 30 Sysop Jake
140 76703,4032 NYJ 30 Wayne/Moderator
144 70007,2376 TTO 30 Chris Smeets
(Wayne/Moderator)
Great work. I certainly appreciate that you've brought us such a professional...
utility. ga
(Sysop/Betty)
I think Ray has a comment.
(Wayne/Moderator) Ray, ga
(Ray Bowman)
Pass. Thanks. ga
(Wayne/Moderator)
Questions?
(Ray Bowman) ?
(Sysop Jake) ?
(Wayne/Moderator) Ray
(Ray Bowman)
Chris, what's coming down the line for the users? ga
(Sysop/Betty) ?
(Chris Smeets)
Quite alot actually
I plan to write my own KERNEL of routines, so that ARC will boot up as
a basically empty shell. You will then load in the commands (arc, move etc)
one at a time as you need them. Once this kernel is written, I have a whole lot
of external functions planned.
I hope to be able to extract MS-DOS archives, unsqueeze CP/M squeezed files
and a lot of other file manipulation utilities. Filters of various sorts,
and possibly a disk nibbler that outputs to an archive.
(Wayne/Moderator)
Amazing. Jake, ga.
(Chris Smeets)
There are a lot of things I have planned. I want to take my time
and write this kernel properly because it will determine how easy
the utilities which follow are to write.
ga
(Sysop Jake)
I have two questions...
The first is an old argument. Assembly language programmers like to yell...
about which assembler is best...
(Ray Bowman) !
(Sysop Jake)
Which assembler do you use and did you just sort of fall into it...
or have you tested other assemblers and you picked the best one?...
Also, will your Kernel routines be relocatable?...
I mean are you going to avoid all JMPs and JSRs? ga
(Chris Smeets)
I use an assembler which I have written myself
It's not too fancy...no macros and such, but uses seq files as input
and is fairly simple to use. I like well commented source code and tend
to shy away from assemblers which use the basic interpreter as an editor
since things don't format nicely that way.
As for the kernel...
It will be implemented sort of like MS-DOS function interrrupts. All calls
will be through ($0314), and the code can reside anywhere. The external
funxctions will be relocatable (like USQ) and will access the kernel through
$0314. It should be possible to write one utility for several different
machines this way. ga
(Wayne/Moderator) Follow up, Jake?
(Sysop Jake)
It surprised me at first that you wrote your own...
assembler, but then I remembered you were a PET programmer. That explains it.
hehe
ga
(Wayne/Moderator) Betty
(Sysop/Betty)
Well, tonight just before logging on I wanted to do a de-ARC and actually...
forgot the ARC/L command and couldn't find my documentation in a hurry...
so I entered ARC/F and got a display...
what did I get? ga
(Chris Smeets)
ARC/F is used to strip XMODEM padding from the end of ...
an archive. This isn't normally a problem, but can really screw ...
things up if you try to append to an archive that has been padded.
ga
(Wayne/Moderator) Betty?
(Sysop/Betty) Thanks, Chris. ga
(Wayne/Moderator) ga, Ray
11:47:35 PM EST Saturday, December 13, 1986
Job User ID Nod Ch Tlk Handle
--- ----------- --- -- --- ------------
54 76526,711 BUT 30 Ray Bowman
118 76703,4037 SEA 30 Sysop/Betty
125 76703,3051 GNC 30 Sysop Jake
140 76703,4032 NYJ 30 Wayne/Moderator
144 70007,2376 TTO 30 Chris Smeets
(Ray Bowman)
Have to sign off so I would like to thank Chris for the opportunity...
to meet you and talk with you. ...
THANKS M!
(Doug Gurfein)
hello all
(Chris Smeets)
ok Ray... hope to meet and chat again sometime.
(Wayne/Moderator)
Thank you, Ray, for attending and your questions.
(Sysop Jake)
Hi Doug
(Wayne/Moderator)
Welcome, Doug
(Sysop/Betty)
Hello Doug.
(Sysop Jake) ?
(Wayne/Moderator)
Any questions for Chris 'The Great' Smeets, author of ARC (64), Doug?
Jake, ga
(Chris Smeets)
blush
(Sysop/Betty)
It's true, Chris.
(Sysop Jake)
Chris: How difficult is the compress/de-compress routine...
how many bytes of assembly language...
and can you cover it in a paragraph here?...
If not, where are the details? ga
(Chris Smeets)
All of the ARC/UNARC routines reside between about
$A000-$B800, so thats about 6K. Not bad since the
IBM version takes over 32K to do basically the same thing!
I could probably go to town and get it down even smaller.
My algorithm has a fault in that it requires alot of workspace to
crunch files (12k+16k) when 12k are all that is really needed.
The CRunch routines are the most difficult.
Squeezing next, and packing and storing are simple.
Probably the most complicated aspect of it is trying to keep
track of what I'm doing since there are actually 3 passes...
analyze pack then compress,
with the pack and compress done simultaneously.
ga
(Wayne/Moderator) Jake, follow-up?
(Sysop Jake)
I've read a little about Huffman encoding...
the basic idea is to look for the most common characters/bytes...
and then give them a smaller number of bits, right?...
The letter E might have 5 bits, versus 9 or 10 for the letter Q. ga
(Chris Smeets)
yes. That's basically it, the length of the code is dependent
on how often the byte occurs in the file.
The ones that occur most often have short codes, and the ones
that occur least often have longer ones.
(Sysop Jake)
Is the frequency table transmitted with the file?
(Chris Smeets)
No...the codes are represented as a binary tree, and the tree is
passed along as a header in the squeezed file.
ga
(Sysop Jake) ?
(Wayne/Moderator)
Chris, could you describe how the single pass crunch works?
(Chris Smeets)
That's not so easy, but I'll try....
Actually CRUNCHING is by nature done in only one pass.
The only reason I use two is so that I can compare the crunched length
with the squeezed length, and so decide upon the best storage method.
A crude analogy would be BASIC programs, which are tokenized.
The tokens can be expanded into keywords which are much longer than the tokens.
The difference is that ARC reads the file sequentially, and builds the
"string table" dynamically as it goes through the file. This way only
sequences which actually occur in the file need occur in the string table.
The present algorithm, as described by Terry Welch in IEEE Computer is
by no means the best one. No attempt is made to optimize the strings which
should or should not be included in the table. You can probably expect to
see some improved crunch algorithms in the future.
I have even heard one guy say he could crunch many files down to a single
byte! (I'll have to see it to believe it though)
ga
(Wayne/Moderator)
I used to use the amazing optimizing ARChiving but find the Crunch loses only
5% or less with MUCH time savings. Ga, Jake
(Sysop Jake)
I wanted to ask about graphics files. There's a way of crunching/compressing...
where you look for repeating patterns. Run Length Encoding it's called...
where CHR$(50) CHR$(0) CHR$(150) CHR$(255) would mean 50 0's, then 150 255's...
does ARC do any of this? ga
(Chris Smeets)
YES. I call it packing.
Crunched and squashed files are both packed before being processed by the
crunch or squeeze algorithms. Sometimes packed files grow, so squeezing is
sometimes more efficient than squashing.
ga
(Sysop Jake)
I know it doesn't work for text files.
But it's great for graphics screens where bytes or bits are repeated. ga
(Wayne/Moderator)
Any final questions? It's after midnite EST and Chris has given us an ...
(Sysop Jake) Nope.
(Wayne/Moderator)
excellent and informative appearance. ga
(Wayne/Moderator) Betty?
(Sysop/Betty) !
(Wayne/Moderator) ga
(Sysop/Betty)
Chris, I want to thank you for being our Guest here for an excellent COnference...
and the Transcript will be available in DL 1 for all our Members and enjoy...
All my thanks for sharing your ARC program and utilities with CBMART. ...
And Wayne, thanks for an excellent job of Moderating. ga
(Chris Smeets)
Thank-you for inviting me. I enjoyed myself.
(Wayne/Moderator)
Your CO will be much promoted, Chris....
and will be a lasting contribution, along side your wonderful work...
I want to personally thank you for the high value you have invested in...
producing such an effective and reliable utility of so much benefit...
Your Conference was a great success. Thank you.
(Sysop/Betty) ?
(Wayne/Moderator) Betty
(Sysop/Betty)
Chris, is there an ARC230 Version? ga
(Chris Smeets)
Yes, I'll post it later on tonight.